package com.kreative.rainbowstudio.rainbowdash;

public class Palettes {
	public static final int CHANNEL_RED = 0;
	public static final int CHANNEL_GREEN = 1;
	public static final int CHANNEL_BLUE = 2;
	
	private static final int[][] PALETTE_INFO = new int[][] {
		{ 0,    8   }, /* OCTAL_RGB */
		{ 8,    8   }, /* OCTAL_RBG */
		{ 16,   8   }, /* OCTAL_GRB */
		{ 24,   8   }, /* OCTAL_GBR */
		{ 32,   8   }, /* OCTAL_BRG */
		{ 40,   8   }, /* OCTAL_BGR */
		{ 48,   8   }, /* OCTAL_QUICKDRAW */
		{ 56,   8   }, /* OCTAL_IMAGEWRITER */
		{ 64,   8   }, /* OCTAL_RAINBOW_0 */
		{ 72,   8   }, /* OCTAL_RAINBOW_1 */
		{ 80,   8   }, /* OCTAL_RAINBOW_2 */
		{ 88,   10  }, /* DECIMAL_RAINBOW_0 */
		{ 98,   10  }, /* DECIMAL_RAINBOW_1 */
		{ 108,  10  }, /* DECIMAL_RYCV */
		{ 118,  12  }, /* DODECIMAL_RAINBOW_0 */
		{ 130,  12  }, /* DODECIMAL_RAINBOW_1 */
		{ 142,  16  }, /* HEX_CGA */
		{ 158,  16  }, /* HEX_CHEAP_CGA */
		{ 174,  16  }, /* HEX_SABINE */
		{ 190,  16  }, /* HEX_TOS */
		{ 206,  16  }, /* HEX_WINDOWS */
		{ 222,  16  }, /* HEX_MACINTOSH */
		{ 238,  16  }, /* HEX_RAINBOW_0 */
		{ 254,  16  }, /* HEX_RAINBOW_1 */
		{ 270,  20  }, /* VIGESIMAL_RAINBOW */
		{ 290,  24  }, /* RAINBOW_24 */
		{ 314,  32  }, /* RAINBOW_32 */
		{ 346,  36  }, /* RAINBOW_36 */
		{ 382,  7   }, /* RYCV_DAY */
		{ 389,  13  }, /* RYCV_MONTH */
		{ 402,  26  }, /* RYCV_LETTER */
		{ 428,  37  }, /* RYCV_TEST */
	};
	
	private static final byte[][] PALETTE_DATA = new byte[][] {
		/* RED */ {
			/* OCTAL_RGB */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* OCTAL_RBG */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* OCTAL_GRB */
			(byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF,
			/* OCTAL_GBR */
			(byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF,
			/* OCTAL_BRG */
			(byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF,
			/* OCTAL_BGR */
			(byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF,
			/* OCTAL_QUICKDRAW */
			(byte)0xFF, (byte)0xFB, (byte)0xF2, (byte)0xDD, (byte)0x02, (byte)0x00, (byte)0x00, (byte)0x00,
			/* OCTAL_IMAGEWRITER */
			(byte)0xFF, (byte)0xFB, (byte)0xDD, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0x00,
			/* OCTAL_RAINBOW_0 */
			(byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF,
			/* OCTAL_RAINBOW_1 */
			(byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0xFF,
			/* OCTAL_RAINBOW_2 */
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0xFF,
			/* DECIMAL_RAINBOW_0 */
			(byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80,
			(byte)0xFF, (byte)0xFF,
			/* DECIMAL_RAINBOW_1 */
			(byte)0x00, (byte)0x99, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x80,
			(byte)0x80, (byte)0xFF,
			/* DECIMAL_RYCV */
			(byte)0x80, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80,
			(byte)0xFF, (byte)0xFF,
			/* DODECIMAL_RAINBOW_0 */
			(byte)0x00, (byte)0x99, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x80, (byte)0xFF, (byte)0x80, (byte)0xFF,
			/* DODECIMAL_RAINBOW_1 */
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF,
			/* HEX_CGA */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xAA, (byte)0xAA, (byte)0xAA, (byte)0xAA,
			(byte)0x55, (byte)0x55, (byte)0x55, (byte)0x55, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* HEX_CHEAP_CGA */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xAA, (byte)0xAA, (byte)0xAA, (byte)0xAA,
			(byte)0x55, (byte)0x55, (byte)0x55, (byte)0x55, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* HEX_SABINE */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0xAA,
			(byte)0x55, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* HEX_TOS */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xCC, (byte)0xCC, (byte)0xCC,
			(byte)0x55, (byte)0x00, (byte)0x33, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* HEX_WINDOWS */
			(byte)0x00, (byte)0x80, (byte)0x00, (byte)0x80, (byte)0x00, (byte)0x80, (byte)0x00, (byte)0xC0,
			(byte)0x80, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF,
			/* HEX_MACINTOSH */
			(byte)0xFF, (byte)0xFB, (byte)0xFF, (byte)0xDD, (byte)0xF2, (byte)0x47, (byte)0x00, (byte)0x02,
			(byte)0x1F, (byte)0x00, (byte)0x56, (byte)0x90, (byte)0xC0, (byte)0x80, (byte)0x40, (byte)0x00,
			/* HEX_RAINBOW_0 */
			(byte)0x00, (byte)0x99, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0xFF,
			/* HEX_RAINBOW_1 */
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x40, (byte)0x80, (byte)0xC0, (byte)0xFF, (byte)0xFF,
			/* VIGESIMAL_RAINBOW */
			(byte)0x00, (byte)0x99, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x40, (byte)0x80, (byte)0xC0,
			(byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0xFF,
			/* RAINBOW_24 */
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0xC0, (byte)0xFF,
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0xFF,
			(byte)0x80, (byte)0x80, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x40, (byte)0x80,
			/* RAINBOW_32 */
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0xC0, (byte)0xFF,
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x40, (byte)0x80, (byte)0xC0, (byte)0xFF, (byte)0xFF,
			(byte)0x80, (byte)0x80, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x40, (byte)0x80,
			/* RAINBOW_36 */
			(byte)0x00, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x40,
			(byte)0x80, (byte)0x99, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x40, (byte)0x80, (byte)0xC0,
			(byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x80,
			(byte)0x80, (byte)0xC0, (byte)0xFF, (byte)0xFF,
			/* RYCV_DAY */
			(byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x99, (byte)0x80, (byte)0xFF,
			/* RYCV_MONTH */
			(byte)0xFF, (byte)0x80, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0xFF,
			(byte)0xFF, (byte)0xFF, (byte)0x99, (byte)0xFF, (byte)0x00,
			/* RYCV_LETTER */
			(byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x80, (byte)0x80, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0xFF, (byte)0xC0, (byte)0x00, (byte)0x99, (byte)0x00, (byte)0xFF, (byte)0xFF,
			(byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x99, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0x80,
			/* RYCV_TEST */
			(byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0x99, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0x80, (byte)0x80, (byte)0x80, (byte)0xC0, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x40, (byte)0x80, (byte)0xC0, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x80, (byte)0x80,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x40, (byte)0x80,
		},
		/* GREEN */ {
			/* OCTAL_RGB */
			(byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF,
			/* OCTAL_RBG */
			(byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF,
			/* OCTAL_GRB */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* OCTAL_GBR */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* OCTAL_BRG */
			(byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF,
			/* OCTAL_BGR */
			(byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF,
			/* OCTAL_QUICKDRAW */
			(byte)0xFF, (byte)0xF3, (byte)0x08, (byte)0x09, (byte)0xAB, (byte)0x80, (byte)0x00, (byte)0x00,
			/* OCTAL_IMAGEWRITER */
			(byte)0xFF, (byte)0xF3, (byte)0x09, (byte)0x64, (byte)0x00, (byte)0x9F, (byte)0x00, (byte)0x00,
			/* OCTAL_RAINBOW_0 */
			(byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0xFF,
			/* OCTAL_RAINBOW_1 */
			(byte)0x00, (byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0xFF,
			/* OCTAL_RAINBOW_2 */
			(byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x00,
			/* DECIMAL_RAINBOW_0 */
			(byte)0x00, (byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0xFF,
			/* DECIMAL_RAINBOW_1 */
			(byte)0x00, (byte)0x66, (byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00,
			(byte)0x80, (byte)0xFF,
			/* DECIMAL_RYCV */
			(byte)0x80, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0x00,
			(byte)0x40, (byte)0xFF,
			/* DODECIMAL_RAINBOW_0 */
			(byte)0x00, (byte)0x66, (byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x80, (byte)0xFF,
			/* DODECIMAL_RAINBOW_1 */
			(byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			/* HEX_CGA */
			(byte)0x00, (byte)0x00, (byte)0xAA, (byte)0xAA, (byte)0x00, (byte)0x00, (byte)0x55, (byte)0xAA,
			(byte)0x55, (byte)0x55, (byte)0xFF, (byte)0xFF, (byte)0x55, (byte)0x55, (byte)0xFF, (byte)0xFF,
			/* HEX_CHEAP_CGA */
			(byte)0x00, (byte)0x00, (byte)0xAA, (byte)0xAA, (byte)0x00, (byte)0x00, (byte)0xAA, (byte)0xAA,
			(byte)0x55, (byte)0x55, (byte)0xFF, (byte)0xFF, (byte)0x55, (byte)0x55, (byte)0xFF, (byte)0xFF,
			/* HEX_SABINE */
			(byte)0x00, (byte)0x00, (byte)0x80, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0xAA,
			(byte)0x55, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF,
			/* HEX_TOS */
			(byte)0x00, (byte)0x00, (byte)0xCC, (byte)0xCC, (byte)0x00, (byte)0x00, (byte)0x99, (byte)0xCC,
			(byte)0x55, (byte)0x66, (byte)0xFF, (byte)0xCC, (byte)0x00, (byte)0x66, (byte)0xFF, (byte)0xFF,
			/* HEX_WINDOWS */
			(byte)0x00, (byte)0x00, (byte)0x80, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0xC0,
			(byte)0x80, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF,
			/* HEX_MACINTOSH */
			(byte)0xFF, (byte)0xF3, (byte)0x64, (byte)0x09, (byte)0x08, (byte)0x00, (byte)0x00, (byte)0xAB,
			(byte)0xB7, (byte)0x64, (byte)0x2C, (byte)0x71, (byte)0xC0, (byte)0x80, (byte)0x40, (byte)0x00,
			/* HEX_RAINBOW_0 */
			(byte)0x00, (byte)0x66, (byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0xFF,
			/* HEX_RAINBOW_1 */
			(byte)0x00, (byte)0x40, (byte)0x80, (byte)0xC0, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			/* VIGESIMAL_RAINBOW */
			(byte)0x00, (byte)0x66, (byte)0x00, (byte)0x40, (byte)0x80, (byte)0xC0, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x80, (byte)0xFF,
			/* RAINBOW_24 */
			(byte)0x80, (byte)0xC0, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x80, (byte)0x80,
			(byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x40, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00,
			/* RAINBOW_32 */
			(byte)0x80, (byte)0xC0, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x80, (byte)0x80,
			(byte)0x00, (byte)0x40, (byte)0x80, (byte)0xC0, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x40, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00,
			/* RAINBOW_36 */
			(byte)0x00, (byte)0x00, (byte)0x40, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x66, (byte)0x00, (byte)0x40, (byte)0x80, (byte)0xC0, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x80, (byte)0x80, (byte)0xC0, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0x80, (byte)0x80, (byte)0x80, (byte)0xFF,
			/* RYCV_DAY */
			(byte)0x80, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0x66, (byte)0x00, (byte)0xFF,
			/* RYCV_MONTH */
			(byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0xC0, (byte)0x00, (byte)0x80,
			(byte)0xFF, (byte)0xFF, (byte)0x66, (byte)0x00, (byte)0xFF,
			/* RYCV_LETTER */
			(byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0x80, (byte)0xFF,
			(byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x66, (byte)0x00, (byte)0xFF, (byte)0x00,
			(byte)0x80, (byte)0x00, (byte)0xEE, (byte)0x00, (byte)0x80, (byte)0x66, (byte)0xFF, (byte)0xC0,
			(byte)0xFF, (byte)0x80,
			/* RYCV_TEST */
			(byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xEE, (byte)0x66, (byte)0x80, (byte)0xC0, (byte)0xFF,
			(byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0x00, (byte)0x40, (byte)0x80,
			(byte)0xC0, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x40, (byte)0x80,
			(byte)0x80, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00,
		},
		/* BLUE */ {
			/* OCTAL_RGB */
			(byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF,
			/* OCTAL_RBG */
			(byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF,
			/* OCTAL_GRB */
			(byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF,
			/* OCTAL_GBR */
			(byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF,
			/* OCTAL_BRG */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* OCTAL_BGR */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* OCTAL_QUICKDRAW */
			(byte)0xFF, (byte)0x05, (byte)0x84, (byte)0x07, (byte)0xEA, (byte)0x12, (byte)0xD3, (byte)0x00,
			/* OCTAL_IMAGEWRITER */
			(byte)0xFF, (byte)0x05, (byte)0x07, (byte)0x03, (byte)0xD3, (byte)0x00, (byte)0xFF, (byte)0x00,
			/* OCTAL_RAINBOW_0 */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* OCTAL_RAINBOW_1 */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* OCTAL_RAINBOW_2 */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* DECIMAL_RAINBOW_0 */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0xFF,
			/* DECIMAL_RAINBOW_1 */
			(byte)0x00, (byte)0x33, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF,
			(byte)0x80, (byte)0xFF,
			/* DECIMAL_RYCV */
			(byte)0x80, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0x00, (byte)0xFF,
			(byte)0x00, (byte)0xFF,
			/* DODECIMAL_RAINBOW_0 */
			(byte)0x00, (byte)0x33, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0xFF,
			/* DODECIMAL_RAINBOW_1 */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80,
			/* HEX_CGA */
			(byte)0x00, (byte)0xAA, (byte)0x00, (byte)0xAA, (byte)0x00, (byte)0xAA, (byte)0x00, (byte)0xAA,
			(byte)0x55, (byte)0xFF, (byte)0x55, (byte)0xFF, (byte)0x55, (byte)0xFF, (byte)0x55, (byte)0xFF,
			/* HEX_CHEAP_CGA */
			(byte)0x00, (byte)0xAA, (byte)0x00, (byte)0xAA, (byte)0x00, (byte)0xAA, (byte)0x00, (byte)0xAA,
			(byte)0x55, (byte)0xFF, (byte)0x55, (byte)0xFF, (byte)0x55, (byte)0xFF, (byte)0x55, (byte)0xFF,
			/* HEX_SABINE */
			(byte)0x00, (byte)0x80, (byte)0x00, (byte)0x80, (byte)0x00, (byte)0x80, (byte)0x00, (byte)0xAA,
			(byte)0x55, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF,
			/* HEX_TOS */
			(byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xCC, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xCC,
			(byte)0x55, (byte)0xFF, (byte)0x33, (byte)0xFF, (byte)0x99, (byte)0xFF, (byte)0x33, (byte)0xFF,
			/* HEX_WINDOWS */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0xC0,
			(byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* HEX_MACINTOSH */
			(byte)0xFF, (byte)0x05, (byte)0x03, (byte)0x07, (byte)0x84, (byte)0xA5, (byte)0xD3, (byte)0xEA,
			(byte)0x14, (byte)0x12, (byte)0x05, (byte)0x3A, (byte)0xC0, (byte)0x80, (byte)0x40, (byte)0x00,
			/* HEX_RAINBOW_0 */
			(byte)0x00, (byte)0x33, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80,
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x80, (byte)0xFF,
			/* HEX_RAINBOW_1 */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80,
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80,
			/* VIGESIMAL_RAINBOW */
			(byte)0x00, (byte)0x33, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0x80, (byte)0x80, (byte)0xFF,
			/* RAINBOW_24 */
			(byte)0x80, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0x80,
			/* RAINBOW_32 */
			(byte)0x80, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80,
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0x80,
			/* RAINBOW_36 */
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0x80, (byte)0x80,
			(byte)0x80, (byte)0x33, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0xFF,
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			/* RYCV_DAY */
			(byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF, (byte)0x33, (byte)0xFF, (byte)0x00,
			/* RYCV_MONTH */
			(byte)0x00, (byte)0xFF, (byte)0x80, (byte)0x00, (byte)0x80, (byte)0x80, (byte)0xFF, (byte)0x00,
			(byte)0xFF, (byte)0x00, (byte)0x33, (byte)0x00, (byte)0x00,
			/* RYCV_LETTER */
			(byte)0x00, (byte)0x80, (byte)0x80, (byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0xFF,
			(byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00, (byte)0x33, (byte)0xFF, (byte)0x00, (byte)0xFF,
			(byte)0x80, (byte)0x00, (byte)0xCC, (byte)0x00, (byte)0x00, (byte)0x33, (byte)0xFF, (byte)0x80,
			(byte)0x00, (byte)0x80,
			/* RYCV_TEST */
			(byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xCC, (byte)0x33, (byte)0x80, (byte)0x80, (byte)0x80,
			(byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x80, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0x80,
		},
	};
	
	public int getPaletteColor(int palette, int channel, int value) {
		int offset = PALETTE_INFO[palette % 32][0];
		int length = PALETTE_INFO[palette % 32][1];
		return PALETTE_DATA[channel % 3][offset + (value % length)] & 0xFF;
	}
	
	public int getPaletteCount() {
		return 32;
	}
	
	public int getPaletteColorCount(int palette) {
		return PALETTE_INFO[palette % 32][1];
	}
}
